初始化
在你在使用 HiEasyX 的任何接口前,请确保你已经正确初始化了 HiEasyX。未初始化调用任何 HiEasyX 的接口都会导致不确定的错误后果。
如果你已经充分理解了上一页的内容,我们这次来看看示例代码的前半部分:HiEasyX 的初始化。示例代码中做了这些工作来初始化 HiEasyX:
HX::HXInitForEasyX();
HX::SetBuffer(GetWorkingImage());
这些代码是什么意思呢?先来看第一行:HX::HXInitForEasyX
,很明显,这个函数是用来初始化 HiEasyX 与 EasyX 交互相关的东西的(你不必了解但是这里需要提及的是:HiEasyX 的设计上允许使用不同的绘图后端,因此需要特别区分对不同绘图后端的初始化函数)。这个函数并没有什么特别的,你只需要记住下次用 HiEasyX 时写了 initgraph
以后把这个函数紧跟着写上就可以了。
第二行的 HX::SetBuffer(GetWorkingImage());
就比较有意思了。HX::SetBuffer
函数是用来设置当前 HiEasyX 的渲染工作缓冲区的。如果你不知道这是什么意思,你就这么理解:就是设置 HiEasyX 将要把界面绘制在哪的。GetWorkingImage()
自然不用多说,为获得当前默认的绘图缓冲对象(IMAGE 对象)。
其实,HX::SetBuffer
更好的使用方法应为:
HX::SetBuffer(HX::GetHXBuffer(GetWorkingImage()));
这里多嵌套了一层 HX::GetHXBuffer
函数,该函数负责将 EasyX 或其他的绘图后端的缓冲对象转化为 HiEasyX 能够使用的缓冲对象。但是事实上,HiEasyX 最终的实现方法使这个函数可以被忽略不计。为了使得引导尽量简洁,此处不在正文中提及。如果你不知道这是什么意思,那么可以对本信息置之不理,这不影响你使用 HiEasyX。
再看往渲染循环中的有关初始化的代码:
HX::HXBegin();
...
HX::End();
HX::Render();
其中的 HX::HXBegin
是初始化 HiEasyX 上下文的函数。如果你不知道什么是上下文的话,简单点来说就是:一次循环所需要用到的所有资源。所以 HX::End
即为释放 HiEasyX 上下文的函数。
HX::Render
函数必须在 HX::End
被调用以后调用。即,渲染操作必须要在上下文释放后才能被正常调用。
至此,你已经基本了解了如何初始化 HiEasyX 以及 HiEasyX 的基本概念。是不是非常简单?马上你就可以基本掌握 HiEasyX 的全部内容了。